{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "替换后的文本: 赵泽林个人网页的网址为http://abc138qaz，喜欢语文、数学和科学。\n",
      "数学和科学科目: 数学, 科学\n",
      "替换数字后的文本: 赵泽林个人网页的网址为http://abc138qaz，喜欢语文、数学和科学。\n",
      "以h开头c结尾的字符串: ['http://abc']\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "text= \"张三个人网页的网址为http://abc138qaz，喜欢语文、数学和科学。\"\n",
    "xingming= re.sub(r'张三', '赵泽林', xingming)\n",
    "print(f\"替换后的文本: {xingming}\")\n",
    "kemu=re.findall(r'(数学|科学)', text)\n",
    "print(f\"数学和科学科目: {', '.join(kemu)}\")\n",
    "wenben = re.sub(r'\\d', '*', text)\n",
    "print(f\"替换数字后的文本: {xingming}\")\n",
    "result = re.findall(r'h.*?c', text)\n",
    "print(f\"以h开头c结尾的字符串:\",result)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import jieba\n",
    "from wordcloud import WordCloud\n",
    "import matplotlib.pyplot as plt\n",
    "import imageio\n",
    "f = open(r'data/sea.txt', encoding = 'utf-8')\n",
    "t = f.read()\n",
    "f.close()\n",
    "words = jieba.lcut(t)\n",
    "txt = ' '.join(words)\n",
    "image = imageio.imread(r'data/horse.png')\n",
    "w = WordCloud(font_path = r'data/FZFSJW.TTF', background_color = 'white', mask = image)\n",
    "w.generate(txt)\n",
    "w.to_file(r'data/test.png')\n",
    "plt.imshow(w, interpolation = 'bilinear')\n",
    "plt.axis(\"off\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy\n",
    "import gensim\n",
    "import numpy as np\n",
    "from jieba import analyse\n",
    "from gensim.models import Word2Vec\n",
    "from gensim.models.word2vec import LineSentence\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "与'文化'相似度最高的10个词：\n",
      "[('娱乐', 0.7020318508148193), ('素养', 0.680790901184082), ('交流', 0.6719440221786499), ('现代', 0.6525171399116516), ('艺术', 0.6512652635574341), ('道德', 0.646972119808197), ('地理', 0.6454612612724304), ('民族', 0.6371497511863708), ('戏剧', 0.6370497345924377), ('民间', 0.6367246508598328)]\n"
     ]
    }
   ],
   "source": [
    "def train_word2vec():\n",
    "    cor_data = open('data/TrainData.txt', 'r', encoding = 'utf-8')\n",
    "    model = Word2Vec(LineSentence(cor_data), sg = 0, vector_size = 200, window = 5, min_count = 5, workers = 9)\n",
    "    model.save('data/model_word2vec')\n",
    "    print(\"与'文化'相似度最高的10个词：\")\n",
    "    print(model.wv.most_similar('文化', topn = 10))\n",
    "train_word2vec()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train_word2vec():\n",
    "    cor_data = open('data/TrainData.txt', 'r', encoding='utf-8')\n",
    "    model = Word2Vec(LineSentence(cor_data), \n",
    "                    sg=0, \n",
    "                    vector_size=200, \n",
    "                    window=5, \n",
    "                    min_count=5, \n",
    "                    workers=9)\n",
    "    model.save('data/model_word2vec')\n",
    "    print(\"与'文化'相似度最高的10个词：\")\n",
    "    print(model.wv.most_similar('文化', topn=10))\n",
    "\n",
    "def keyword(data):\n",
    "    tfidf = analyse.extract_tags\n",
    "    keywords = tfidf(data) \n",
    "    return keywords\n",
    "\n",
    "def get_keywords(docpath, savepath):\n",
    "    with open(docpath, 'r', encoding='utf-8') as docf, open(savepath, 'w') as outf:\n",
    "        for data in docf:\n",
    "            data = data[:len(data)-1]\n",
    "            keywords = keyword(data)\n",
    "            for word in keywords:\n",
    "                outf.write(word + ' ')  \n",
    "            outf.write('\\n')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_pos(string, char):\n",
    "    space_pos = []\n",
    "    try:\n",
    "        space_pos = list(((pos) for pos, val in enumerate(string) if(val == char)))\n",
    "    except:\n",
    "        pass\n",
    "    return space_pos\n",
    "\n",
    "def get_vector(file_name, model):\n",
    "    with open(file_name, 'r') as f:\n",
    "        wordvec_size = 200\n",
    "        word_vector = numpy.zeros(wordvec_size)\n",
    "        for data in f:\n",
    "            space_pos = get_pos(data, ' ')\n",
    "            first_word = data[0:space_pos[0]]\n",
    "            if model.wv.__contains__(first_word):\n",
    "                word_vector = word_vector + model.wv[first_word]\n",
    "            for i in range(len(space_pos) - 1):\n",
    "                word = data[space_pos[i]:space_pos[i + 1]]\n",
    "                if model.wv.__contains__(word):\n",
    "                    word_vector = word_vector + model.wv[word]\n",
    "        return word_vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文本zuoye1的部分向量：\n",
      " [ 0.01218717 -0.2313776  -0.38729504 -0.30123925 -0.26934898 -0.03216049\n",
      "  0.4022032   0.34181505  0.14081721 -0.235625   -0.09040526  0.35086975\n",
      "  0.7267869   0.71572506 -0.1670448   0.223374   -0.13881528 -0.01513029\n",
      "  0.21786447 -0.5510503 ]\n",
      "文本zuoye2的部分向量：\n",
      " [-0.0901344  -0.21664836 -0.2743781  -0.41818842 -0.24714985  0.08597622\n",
      "  0.3496601   0.424586    0.21893716 -0.3234119   0.16059376  0.4331462\n",
      "  0.60744584  0.8556515  -0.20456819  0.03536611 -0.132525    0.08437528\n",
      "  0.0716589  -0.5022099 ]\n",
      "文本zuoye1和文本zuoye2的相似度： 0.9481482\n"
     ]
    }
   ],
   "source": [
    "def similarity(vector1, vector2):\n",
    "    vector1_abs = np.sqrt(np.dot(vector1, vector1))\n",
    "    vector2_abs = np.sqrt(np.dot(vector2, vector2))\n",
    "    if vector1_abs == 0 or vector2_abs == 0:\n",
    "        return 0.0\n",
    "    return np.dot(vector1, vector2) / (vector1_abs * vector2_abs)\n",
    "def get_vector(file_path, model):\n",
    "    with open(file_path, 'r', encoding='utf-8') as f:\n",
    "        text = f.read()\n",
    "        words = jieba.lcut(text)\n",
    "        vectors = []\n",
    "        for word in words:\n",
    "            if word in model.wv:\n",
    "                vectors.append(model.wv[word])\n",
    "        if len(vectors) > 0:\n",
    "            return np.mean(vectors, axis=0)\n",
    "        return np.zeros(model.vector_size)\n",
    "def get_keywords(input_file, output_file):\n",
    "    with open(input_file, 'r', encoding='utf-8') as f:\n",
    "        content = f.read()\n",
    "        keywords = jieba.analyse.extract_tags(content, topK=20)\n",
    "    with open(output_file, 'w', encoding='utf-8') as f:\n",
    "        f.write(' '.join(keywords))\n",
    "def main():\n",
    "    model = gensim.models.Word2Vec.load('data/model_word2vec')\n",
    "    zuoye1 = 'data/zuoye1.txt'\n",
    "    zuoye2 = 'data/zuoye2.txt'\n",
    "    zuoye1_keywords = 'data/zuoye1_keywords.txt'\n",
    "    zuoye2_keywords = 'data/zuoye2_keywords.txt'\n",
    "    get_keywords(zuoye1, zuoye1_keywords)\n",
    "    get_keywords(zuoye2, zuoye2_keywords)\n",
    "    zuoye1_vector = get_vector(zuoye1_keywords, model)\n",
    "    zuoye2_vector = get_vector(zuoye2_keywords, model)\n",
    "    print('文本zuoye1的部分向量：\\n', zuoye1_vector[:20])\n",
    "    print('文本zuoye2的部分向量：\\n', zuoye2_vector[:20])\n",
    "    print('文本zuoye1和文本zuoye2的相似度：', similarity(zuoye1_vector, zuoye2_vector))\n",
    "if __name__ == '__main__':\n",
    "    main()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
